/*******************************************************************************
 * Copyright 2010 Simon Mieth
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 ******************************************************************************/
package org.kabeja.common;

/**
 * @author <a href="mailto:simon.mieth@gmx.de>Simon Mieth</a>
 * @author <a href="mailto:michele.franzin@gmail.com>Michele Franzin</a>
 *
 * taken from http://www.isctex.com/acadcolors.php
 */
public class Color {

    private static final String[] rgbs = {
        /* 0 */"0,0,0",
        /* 1 */ "255,0,0",
        /* 2 */ "255,255,0",
        /* 3 */ "0,255,0",
        /* 4 */ "0,255,255",
        /* 5 */ "0,0,255",
        /* 6 */ "255,0,255",
        /* 7 */ "255,255,255",
        /* 8 */ "65,65,65",
        /* 9 */ "128,128,128",
        /* 10 */ "255,0,0",
        /* 11 */ "255,170,170",
        /* 12 */ "189,0,0",
        /* 13 */ "189,126,126",
        /* 14 */ "129,0,0",
        /* 15 */ "129,86,86",
        /* 16 */ "104,0,0",
        /* 17 */ "104,69,69",
        /* 18 */ "79,0,0",
        /* 19 */ "79,53,53",
        /* 20 */ "255,63,0",
        /* 21 */ "255,191,170",
        /* 22 */ "189,46,0",
        /* 23 */ "189,141,126",
        /* 24 */ "129,31,0",
        /* 25 */ "129,96,86",
        /* 26 */ "104,25,0",
        /* 27 */ "104,78,69",
        /* 28 */ "79,19,0",
        /* 29 */ "79,59,53",
        /* 30 */ "255,127,0",
        /* 31 */ "255,212,170",
        /* 32 */ "189,94,0",
        /* 33 */ "189,157,126",
        /* 34 */ "129,64,0",
        /* 35 */ "129,107,86",
        /* 36 */ "104,52,0",
        /* 37 */ "104,86,69",
        /* 38 */ "79,39,0",
        /* 39 */ "79,66,53",
        /* 40 */ "255,191,0",
        /* 41 */ "255,234,170",
        /* 42 */ "189,141,0",
        /* 43 */ "189,173,126",
        /* 44 */ "129,96,0",
        /* 45 */ "129,118,86",
        /* 46 */ "104,78,0",
        /* 47 */ "104,95,69",
        /* 48 */ "79,59,0",
        /* 49 */ "79,73,53",
        /* 50 */ "255,255,0",
        /* 51 */ "255,255,170",
        /* 52 */ "189,189,0",
        /* 53 */ "189,189,126",
        /* 54 */ "129,129,0",
        /* 55 */ "129,129,86",
        /* 56 */ "104,104,0",
        /* 57 */ "104,104,69",
        /* 58 */ "79,79,0",
        /* 59 */ "79,79,53",
        /* 60 */ "191,255,0",
        /* 61 */ "234,255,170",
        /* 62 */ "141,189,0",
        /* 63 */ "173,189,126",
        /* 64 */ "96,129,0",
        /* 65 */ "118,129,86",
        /* 66 */ "78,104,0",
        /* 67 */ "95,104,69",
        /* 68 */ "59,79,0",
        /* 69 */ "73,79,53",
        /* 70 */ "127,255,0",
        /* 71 */ "212,255,170",
        /* 72 */ "94,189,0",
        /* 73 */ "157,189,126",
        /* 74 */ "64,129,0",
        /* 75 */ "107,129,86",
        /* 76 */ "52,104,0",
        /* 77 */ "86,104,69",
        /* 78 */ "39,79,0",
        /* 79 */ "66,79,53",
        /* 80 */ "63,255,0",
        /* 81 */ "191,255,170",
        /* 82 */ "46,189,0",
        /* 83 */ "141,189,126",
        /* 84 */ "31,129,0",
        /* 85 */ "96,129,86",
        /* 86 */ "25,104,0",
        /* 87 */ "78,104,69",
        /* 88 */ "19,79,0",
        /* 89 */ "59,79,53",
        /* 90 */ "0,255,0",
        /* 91 */ "170,255,170",
        /* 92 */ "0,189,0",
        /* 93 */ "126,189,126",
        /* 94 */ "0,129,0",
        /* 95 */ "86,129,86",
        /* 96 */ "0,104,0",
        /* 97 */ "69,104,69",
        /* 98 */ "0,79,0",
        /* 99 */ "53,79,53",
        /* 100 */ "0,255,63",
        /* 101 */ "170,255,191",
        /* 102 */ "0,189,46",
        /* 103 */ "126,189,141",
        /* 104 */ "0,129,31",
        /* 105 */ "86,129,96",
        /* 106 */ "0,104,25",
        /* 107 */ "69,104,78",
        /* 108 */ "0,79,19",
        /* 109 */ "53,79,59",
        /* 110 */ "0,255,127",
        /* 111 */ "170,255,212",
        /* 112 */ "0,189,94",
        /* 113 */ "126,189,157",
        /* 114 */ "0,129,64",
        /* 115 */ "86,129,107",
        /* 116 */ "0,104,52",
        /* 117 */ "69,104,86",
        /* 118 */ "0,79,39",
        /* 119 */ "53,79,66",
        /* 120 */ "0,255,191",
        /* 121 */ "170,255,234",
        /* 122 */ "0,189,141",
        /* 123 */ "126,189,173",
        /* 124 */ "0,129,96",
        /* 125 */ "86,129,118",
        /* 126 */ "0,104,78",
        /* 127 */ "69,104,95",
        /* 128 */ "0,79,59",
        /* 129 */ "53,79,73",
        /* 130 */ "0,255,255",
        /* 131 */ "170,255,255",
        /* 132 */ "0,189,189",
        /* 133 */ "126,189,189",
        /* 134 */ "0,129,129",
        /* 135 */ "86,129,129",
        /* 136 */ "0,104,104",
        /* 137 */ "69,104,104",
        /* 138 */ "0,79,79",
        /* 139 */ "53,79,79",
        /* 140 */ "0,191,255",
        /* 141 */ "170,234,255",
        /* 142 */ "0,141,189",
        /* 143 */ "126,173,189",
        /* 144 */ "0,96,129",
        /* 145 */ "86,118,129",
        /* 146 */ "0,78,104",
        /* 147 */ "69,95,104",
        /* 148 */ "0,59,79",
        /* 149 */ "53,73,79",
        /* 150 */ "0,127,255",
        /* 151 */ "170,212,255",
        /* 152 */ "0,94,189",
        /* 153 */ "126,157,189",
        /* 154 */ "0,64,129",
        /* 155 */ "86,107,129",
        /* 156 */ "0,52,104",
        /* 157 */ "69,86,104",
        /* 158 */ "0,39,79",
        /* 159 */ "53,66,79",
        /* 160 */ "0,63,255",
        /* 161 */ "170,191,255",
        /* 162 */ "0,46,189",
        /* 163 */ "126,141,189",
        /* 164 */ "0,31,129",
        /* 165 */ "86,96,129",
        /* 166 */ "0,25,104",
        /* 167 */ "69,78,104",
        /* 168 */ "0,19,79",
        /* 169 */ "53,59,79",
        /* 170 */ "0,0,255",
        /* 171 */ "170,170,255",
        /* 172 */ "0,0,189",
        /* 173 */ "126,126,189",
        /* 174 */ "0,0,129",
        /* 175 */ "86,86,129",
        /* 176 */ "0,0,104",
        /* 177 */ "69,69,104",
        /* 178 */ "0,0,79",
        /* 179 */ "53,53,79",
        /* 180 */ "63,0,255",
        /* 181 */ "191,170,255",
        /* 182 */ "46,0,189",
        /* 183 */ "141,126,189",
        /* 184 */ "31,0,129",
        /* 185 */ "96,86,129",
        /* 186 */ "25,0,104",
        /* 187 */ "78,69,104",
        /* 188 */ "19,0,79",
        /* 189 */ "59,53,79",
        /* 190 */ "127,0,255",
        /* 191 */ "212,170,255",
        /* 192 */ "94,0,189",
        /* 193 */ "157,126,189",
        /* 194 */ "64,0,129",
        /* 195 */ "107,86,129",
        /* 196 */ "52,0,104",
        /* 197 */ "86,69,104",
        /* 198 */ "39,0,79",
        /* 199 */ "66,53,79",
        /* 200 */ "191,0,255",
        /* 201 */ "234,170,255",
        /* 202 */ "141,0,189",
        /* 203 */ "173,126,189",
        /* 204 */ "96,0,129",
        /* 205 */ "118,86,129",
        /* 206 */ "78,0,104",
        /* 207 */ "95,69,104",
        /* 208 */ "59,0,79",
        /* 209 */ "73,53,79",
        /* 210 */ "255,0,255",
        /* 211 */ "255,170,255",
        /* 212 */ "189,0,189",
        /* 213 */ "189,126,189",
        /* 214 */ "129,0,129",
        /* 215 */ "129,86,129",
        /* 216 */ "104,0,104",
        /* 217 */ "104,69,104",
        /* 218 */ "79,0,79",
        /* 219 */ "79,53,79",
        /* 220 */ "255,0,191",
        /* 221 */ "255,170,234",
        /* 222 */ "189,0,141",
        /* 223 */ "189,126,173",
        /* 224 */ "129,0,96",
        /* 225 */ "129,86,118",
        /* 226 */ "104,0,78",
        /* 227 */ "104,69,95",
        /* 228 */ "79,0,59",
        /* 229 */ "79,53,73",
        /* 230 */ "255,0,127",
        /* 231 */ "255,170,212",
        /* 232 */ "189,0,94",
        /* 233 */ "189,126,157",
        /* 234 */ "129,0,64",
        /* 235 */ "129,86,107",
        /* 236 */ "104,0,52",
        /* 237 */ "104,69,86",
        /* 238 */ "79,0,39",
        /* 239 */ "79,53,66",
        /* 240 */ "255,0,63",
        /* 241 */ "255,170,191",
        /* 242 */ "189,0,46",
        /* 243 */ "189,126,141",
        /* 244 */ "129,0,31",
        /* 245 */ "129,86,96",
        /* 246 */ "104,0,25",
        /* 247 */ "104,69,78",
        /* 248 */ "79,0,19",
        /* 249 */ "79,53,59",
        /* 250 */ "51,51,51",
        /* 251 */ "80,80,80",
        /* 252 */ "105,105,105",
        /* 253 */ "130,130,130",
        /* 254 */ "190,190,190",
        /* 255 */ "255,255,255"
    };

    public static String getRGBString(int dxfColorCode) {
        if ((dxfColorCode < 0) || (dxfColorCode > rgbs.length)) {
            // default is white
            dxfColorCode = 7;
        }

        return "rgb(" + rgbs[dxfColorCode] + ")";
    }

    public static String getRGBString(byte[] b) {
        StringBuilder buf = new StringBuilder("rgb(");
        buf.append((int) b[0]);
        buf.append(",");
        buf.append((int) b[1]);
        buf.append(",");
        buf.append((int) b[2]);
        buf.append(")");
        return buf.toString();
    }
}
